#include<iostream>
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
using namespace std;

//stderr
int main()
{
    fprintf(stdout,"hello stdout\n");
    fprintf(stderr,"hello stderr\n");

    return 0;
}


//dup2系统调用（重定向）
//int main()
//{
//    int fd = open("a.txt",O_RDWR|O_CREAT|O_TRUNC,0666);
//    int fdd = open("b.txt",O_RDWR|O_CREAT|O_TRUNC,0666);
//    write(fdd,"abcabc",6);
//
//    dup2(fd,1);//fd输出重定向
//    dup2(fdd,0);//fdd输入重定向
//    //将fdd中的数据输出到fd中
//    
//    char buf[1000];
//    rewind(stdin);//将位置指针移动到文件开头
//    //fseek(fp, 0, SEEK_SET);//将位置指针fp移动到文件开头
//    ssize_t sz = read(0,buf,1000);//从sdin中读取数据
//    buf[sz]=0;
//    cout<<buf<<endl;//输出到stdout里
//
//    close(fd);
//    close(fdd);
//
//    return 0;
//}
//

//重定向
//int main()
//{
//    close(0);//stdin
//    open("test.txt",O_RDONLY|O_CREAT,0666);//
//
//    char buf[30];
//    ssize_t sz = read(0,buf,30);
//    buf[sz]=0;
//    cout<<buf<<endl;
//
//    return 0;
//}


//文件读写
//int main()
//{
//    char buf[501];
//    ssize_t sz=read(0,buf,500);
//    buf[sz]=0;
//    if(sz>0)
//    {
//       // cout<<buf<<endl;
//       write(1,buf,strlen(buf));
//    }
//
//    return 0;
//}


//文件描述符
//int main()
//{
//    //int fd1=open("test.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//    //cout<<"fd1 = "<<fd1<<endl;
//    //close(fd1);
//    
//    close(0);//关闭stdin文件
//    int fd2=open("test.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//    cout<<"fd2 = "<<fd2<<endl;
//    close(fd2);
//
//    return 0;
//}

//系统调用接口，打开文件
//int main()
//{
//    int fd1 = open("test.txt",O_WRONLY|O_CREAT,0666);
//    int fd2 = open("test.txt",O_WRONLY|O_CREAT,0666);
//    int fd3 = open("test.txt",O_WRONLY|O_CREAT,0666);
//    cout<<fd1<<" "<<fd2<<" "<<fd3<<endl;
//   // if(fd==-1)
//   // {
//   //     cout<<"调用失败"<<endl;
//   // }
//
//    //write(fd,"haha",4);
//
//    close(fd1); 
//    close(fd2); 
//    close(fd3); 
//
//    return 0;
//}
